package com.mark.common.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

/**
 * @Description: 计算商品价格的工具类
 * @Author: Mark
 * @CreateDate: 2018/3/27.
 * @Version: 2.0
 * @Copyright : 豆浆油条个人非正式工作室
 */
public class BigDecimalUtil {
    private BigDecimalUtil(){}//声明私有构造器

    public static BigDecimal add(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return  b1.add(b2);
    }

    public static BigDecimal sub(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return  b1.subtract(b2);
    }

    public static BigDecimal mul(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return  b1.multiply(b2);
    }

    public static BigDecimal div(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数
    }

    /**
     * BigDecimal参数格式化：保留两位小数
     * @param bigDecimal ：原始value ：eg 2.9
     * @return ：格式化的value：eg 2.90
     */
    public static BigDecimal saveScale2(BigDecimal bigDecimal){
        return bigDecimal.setScale(2, RoundingMode.HALF_UP);
    }

    /**
     * 千分位格式化
     * @param bigDecimal  ：
     * @return ：123456789 = 》123,456,789
     */
    public static String formatBigDecimal(BigDecimal bigDecimal){
        DecimalFormat df=new DecimalFormat(",###,##0"); //没有小数
        return df.format(bigDecimal);
    }


}
